﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Demo
{
    public enum NpcType
    {
        shop,
        task,
        iron
    }
    class Program
    {
        static void Main(string[] args)
        {
            test2();
        }
        public static void test1()
        {
            Task n1 = new Task("森の妖精", NpcType.task, "我这有个棺材送你");
            n1.Speak();

            Shop s1 = new Shop("Dark佟大为", NpcType.shop, "Dark面罩");
            s1.Speak();

            Iron I1 = new Iron("山丘之王", NpcType.iron, "一口钟送你");
            I1.Speak();
        }
        public static void test2()
        {
            //编写一个程序，以实现机器人的层次结构，
            //此层次结构将至少包含抽象类机器人类Robot、炒菜机器人类CookRobot、传菜机器人类DeliveryRobot。
            //Robot类应包含机器人姓名name字段、
            //机器人工作的方法Working()，该方法应该在子类中被实现，机器人工作的方式很多，所以Working()方法应该被定义为抽象方法。
            //可以在CookRobot中添加一个代表菜的类型的字段，用枚举类型；在DeliveryRobot中添加一个代表连续工作时长的字段hours。
            //CookRobot和DeliveryRobot应实现具体的Working()方法。
            //在主类中定义一个方法，形参数据类型是string，返回值数据类型是Robot，
            //方法中实现如果传入的字符串是“炒菜”，那就返回CookRobot的实例（当然是要用Robot的引用指向的），
            //    如果传入的字符串是“传菜”，那就返回DeliveryRobot的实例。
            //Main方法中：用户输入所选择的机器人的功能，根据用户的输入Robot执行对应的功能。

            Console.WriteLine("输入机器命令 炒菜 传菜 默认炒菜");
            String order = Console.ReadLine();
            Robot r1;
            r1=Order(order);
            r1.working();
            

        }
        public static Robot Order(String order) {
            Robot r;
            switch (order)
            {
                case "炒菜":
                    Console.WriteLine("输入执行该操作的机器人名称");
                    string name = Console.ReadLine();
                    Console.WriteLine("输入你要炒的菜");
                    String Cookname = Console.ReadLine();
                    if (Cookname == "青椒炒肉")
                    { r = new CookRobot(name,cook.青椒炒肉);
                        break;
                    }
                    if (Cookname == "番茄炒蛋") {
                        r = new CookRobot(name, cook.番茄炒蛋);
                        break;
                    }
                    if (Cookname == "水煮肉片")
                    {
                        r = new CookRobot(name, cook.水煮肉片);
                        break;
                    }
                    else {
                        Console.WriteLine("输入错误");
                        r = new CookRobot(name, cook.青椒炒肉);
                        break;
                    }           
                case "传菜":
                    Console.WriteLine("输入执行该操作的机器人名称");
                    string name2 = Console.ReadLine();
                    Console.WriteLine("输入工作时长");
                    int hour = int.Parse(Console.ReadLine());
                    r = new DeliveryRobot(name2,hour);
                    break;
                default:
                    Console.WriteLine("别乱输入");
                    r = new CookRobot();
                    break;
            }
            return r;
        }
    }
}
